home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / utils / spriv101 / spriter.pas < prev    next >
Pascal/Delphi Source File  |  1994-12-13  |  66KB  |  2,070 lines

  1. {$G+}
  2. uses    crt,dos;
  3.  
  4. type    muis=array[0..7,0..7] of byte;
  5.         arr=array[1..60,0..31,0..31] of byte;
  6.         woord=string[8];
  7.         defr=array[0..2,0..4] of byte;
  8.         cl=array[0..31,0..31] of byte;
  9.  
  10. const   deff='DEFAULT .IGA';
  11.         pijl:array[0..4,0..4] of byte=((0,25,15,25,0),(25,15,15,15,25),
  12.         (15,25,15,25,15),(0,0,15,0,0),(0,0,15,0,0));
  13.  
  14.  
  15. var     kx1,ky1,kx2,ky2,kx3,ky3,kx4,ky4,kx5,ky5,x5,y5:integer;
  16.         code,i,j,vx1,vy1,xje,ytje,xje2,ytje2:integer;
  17.         scrn:array[0..199,0..319] of byte absolute $A000:0;
  18.         rep,kad1,kleur1,kleur2,savclr,rkx1,rkx2,rky1,rky2:byte;
  19.         k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,chk1:byte;
  20.         font2:array[' '..'Z',1..5,1..3] of byte;
  21.         def:defr;
  22.         t:array[0..255,1..3] of byte;
  23.         keyss:array[0..127] of boolean;
  24.         sel,zet,st:boolean;
  25.         p:procedure;
  26.         f:file;
  27.         fil1,fil2:string[12];
  28.         muisc:muis;
  29.         bg:^muis;
  30.         derf:^defr;
  31.         pad:string;
  32.         iga:arr;
  33.         dum:string[2];
  34.         dum2:array[1..2] of byte;
  35.         dum3,dum4:byte;
  36.         rgb:array[1..3] of byte;
  37.         clip:^cl;
  38.  
  39. procedure writewoordje(x1,y1:integer;woordje:string;ts:byte); forward;
  40.  
  41. procedure setrgbpalette(c,teller,segm,offs:word); assembler;
  42.             asm
  43.                mov dx,$3C8
  44.                mov ax,c
  45.                out dx,al
  46.                inc dx
  47.                mov ds,segm
  48.                mov si,offs
  49.                mov cx,teller
  50.                cld
  51.                rep outsb
  52.                 {mov ax,1010h
  53.                 mov bx,[c]
  54.                 mov ch,[green]
  55.                 mov cl,[blue]
  56.                 mov dh,[red]
  57.                 int 10h}
  58.             end;
  59.  
  60. procedure streef (b:byte;x,y:integer);
  61. begin
  62. str(b,dum);
  63. if b<10 then dum:='0'+dum[1];
  64. writewoordje(x,y,dum,2);
  65. end;
  66.  
  67. {procedure setrgbblok;
  68. var s,o:word;
  69. begin
  70.   s:=seg(t);o:=ofs(t);
  71.   asm
  72.     mov ax,1012h
  73.     mov es,[s]
  74.     mov dx,[o]
  75.     mov bx,0
  76.     mov cx,256
  77.     int 10h
  78.   end;
  79. end;}
  80.  
  81. procedure initgr(bq:byte);assembler;   {zet in grafische mode nr. bq}
  82.    asm
  83.       mov ah,0
  84.       mov al,[bq]
  85.       int 10h
  86.    end;
  87.  
  88. procedure resetmuis;          {zet de muis aan}
  89.    var hax:word;
  90.       begin
  91.          asm
  92.             mov ax,0
  93.             int 33h
  94.             mov hax,ax
  95.          end;
  96.          if hax<>0 then st:=true;
  97.       end;
  98.  
  99. function muisx:integer;       {haalt de x-waarde van de muis}
  100.    var w:word;
  101.       begin
  102.          asm
  103.             mov ax,3
  104.             int 33h
  105.             mov [w],cx
  106.          end;
  107.          muisx:=w div 2;
  108.       end;
  109.  
  110. function muisy:integer;       {haalt de y-waarde van de muis}
  111.    var w:word;
  112.       begin
  113.          asm
  114.             mov ax,3
  115.             int 33h
  116.             mov [w],dx
  117.          end;
  118.          muisy:=w;
  119.       end;
  120.  
  121. function knop(b:byte):boolean;   {haalt de status van de knoppen}
  122.    var w:word;                   {of ze ingedrukt zijn of niet}
  123.       begin
  124.          asm
  125.             mov ax,3
  126.             int 33h
  127.             mov [w],bx
  128.          end;
  129.          case b of
  130.             1:begin if w and 1=1 then knop:=true else knop:=false;end;
  131.             2:begin if w and 2=2 then knop:=true else knop:=false;end;
  132.             3:begin if w and 4=4 then knop:=true else knop:=false;end;
  133.          end;
  134.       end;
  135.  
  136. procedure zetmuisop(x1,y1:integer);assembler;
  137.    asm                  {zet de muis op x,y virtueel beeld}
  138.       mov ax,4
  139.       mov cx,x1
  140.       mov dx,y1
  141.       int 33h
  142.    end;
  143.  
  144. procedure xgrensmuis(x1,x2:integer); assembler;
  145.    asm                   {bepaald de x-grenzen van de muis}
  146.       mov ax,7
  147.       mov cx,x1
  148.       mov dx,x2
  149.       int 33h
  150.    end;
  151.  
  152. procedure ygrensmuis(y1,y2:integer); assembler;
  153.    asm                   {bepaald de y-grenzen van de muis}
  154.       mov ax,8
  155.       mov cx,y1
  156.       mov dx,y2
  157.       int 33h
  158.    end;
  159.  
  160. procedure zetrandkl(color:byte); assembler;
  161.    asm                   {zet de randkleur(overscan)}
  162.       mov ah,10h
  163.       mov al,01h
  164.       mov bh,[color]
  165.       int 10h
  166.    end;
  167.  
  168. procedure putpixel(x1:integer;y1,color:byte);
  169.    begin                 {plaatst een pixel rechtstreeks i/h schermgeheugen}
  170.       scrn[y1,x1]:=color
  171.    end;
  172.  
  173. procedure getpixel(x1:integer;y1:byte);
  174.    begin                 {haalt een pixel rechtstreeks u/h schermgeheugen}
  175.       savclr:=scrn[y1,x1]
  176.    end;
  177.  
  178. procedure zetpijlen(x,y:integer;richt:byte);
  179. begin
  180.    if richt=0 then {arrow-up}
  181.    begin
  182.    for i:=0 to 4 do
  183.       for j:= 0 to 4 do
  184.          if pijl[i,j]<>0 then putpixel(x+j,y+i,pijl[i,j]);
  185.    end;
  186.    if richt=1 then {arrow-down}
  187.    begin
  188.      for i:=4 downto 0 do
  189.         for j:= 4 downto 0 do
  190.            if pijl[i,j]<>0 then putpixel(x+4-j,y+4-i,pijl[i,j]);
  191.    end;
  192.    if richt=2 then  {arrow-left}
  193.    begin
  194.    for i:=0 to 4 do
  195.       for j:= 0 to 4 do
  196.          if pijl[i,j]<>0 then putpixel(x+i,y+j,pijl[i,j]);
  197.    end;
  198.    if richt=3 then {arrow-richt}
  199.    begin
  200.      for i:=4 downto 0 do
  201.         for j:= 4 downto 0 do
  202.            if pijl[i,j]<>0 then putpixel(x+4-i,y+4-j,pijl[i,j]);
  203.    end;
  204. end;
  205.  
  206. procedure kader(x1,x2:integer;y1,y2,color:byte);
  207.    var x3:integer;
  208.        y3,keer:byte;
  209.       begin
  210.          for keer:=1 to 2 do
  211.             begin
  212.                for x3:=x1 to x2 do
  213.                   begin
  214.                      putpixel(x3,y1,color);
  215.                      putpixel(x3,y2,color);
  216.                   end;
  217.                for y3:=y1 to y2 do
  218.                   begin
  219.                      putpixel(x1,y3,color);
  220.                      putpixel(x2,y3,color);
  221.                   end;
  222.                x1:=x1+1;x2:=x2-1;
  223.                y1:=y1+1;y2:=y2-1;
  224.             end;
  225.       end;
  226.  
  227. procedure kader2(x1,x2:integer;y1,y2,color,soort:byte);
  228.    var x3:integer;
  229.        y3,keer:byte;
  230.       begin
  231.          for keer:=1 to 2 do
  232.             begin
  233.                for x3:=x1 to x2 do
  234.                   begin
  235.                      putpixel(x3,y1,color);
  236.                   end;
  237.                for y3:=y1 to y2 do
  238.                   begin
  239.                      putpixel(x1,y3,color);
  240.                   end;
  241.                x1:=x1+1;x2:=x2-1;
  242.                y1:=y1+1;y2:=y2-1;
  243.             end;
  244.          x1:=x1-2;x2:=x2+2;
  245.          y1:=y1-2;y2:=y2+2;
  246.          if soort=0 then color:=120;
  247.          if soort=1 then color:=189;
  248.          for keer:=1 to 2 do
  249.             begin
  250.                for x3:=x1 to x2 do
  251.                   begin
  252.                      putpixel(x3,y2,color);
  253.                   end;
  254.                for y3:=y1 to y2 do
  255.                   begin
  256.                      putpixel(x2,y3,color);
  257.                   end;
  258.                x1:=x1+1;x2:=x2-1;
  259.                y1:=y1+1;y2:=y2-1;
  260.             end;
  261.       end;
  262.  
  263. procedure keys; interrupt;
  264.    var bt:byte;
  265.       begin
  266.          bt:=port[$60];
  267.          if bt>128 then keyss[bt-128]:=false else keyss[bt]:=true;
  268.          mem[$40:$1A]:=mem[$40:$1C];
  269.          inline($9C);
  270.          p;
  271.       end;
  272.  
  273. procedure vulvlak(x1,x2:integer;y1,y2,color:byte);
  274.    var x3:integer;
  275.        y3:byte;
  276.       begin
  277.          for y3:=y1 to y2 do
  278.          for x3:=x1 to x2 do
  279.             begin
  280.                putpixel(x3,y3,color);
  281.             end;
  282.       end;
  283.  
  284. procedure kadertje(x1,x2,y1,y2:integer;color:byte);
  285.    var x3:integer;
  286.        y3,keer:byte;
  287.       begin
  288.          for x3:=x1 to x2 do
  289.             begin
  290.                putpixel(x3,y1,color);
  291.                putpixel(x3,y2,color);
  292.             end;
  293.          for y3:=y1 to y2 do
  294.             begin
  295.                putpixel(x1,y3,color);
  296.                putpixel(x2,y3,color);
  297.             end;
  298.       end;
  299.  
  300. procedure lijnen(x,y:integer);
  301.    var keer,keer2:integer;
  302.       begin
  303.          j:=x;
  304.          for i:=0 to 255 do
  305.             begin
  306.                for keer:=1 to 4 do
  307.                for keer2:= 1 to 4 do
  308.                   begin
  309.                      putpixel(x+keer,y+keer2,i)
  310.                   end;
  311.                if x<=214 then x:=x+5
  312.                   else
  313.                     begin
  314.                        x:=j;
  315.                        y:=y+5;
  316.                     end;
  317.             end;
  318.       end;
  319.  
  320. procedure xlijn(x1,x2,y1:integer;color:byte);
  321.    var x3:integer;
  322.       begin
  323.          for x3:=x1 to x2 do
  324.          putpixel(x3,y1,color);
  325.       end;
  326.  
  327. procedure ylijn(x1,y1,y2:integer;color:byte);
  328.    var y3:integer;
  329.       begin
  330.         for y3:=y1 to y2 do
  331.         putpixel(x1,y3,color);
  332.       end;
  333.  
  334. procedure xschaal(x1,x2,y1:integer;color:byte);
  335.    var keer:byte;
  336.       begin
  337.          for keer:= 1 to 33 do
  338.             begin
  339.                xlijn(x1,x2,y1,color);
  340.                y1:=y1+4;
  341.             end;
  342.       end;
  343.  
  344. procedure yschaal(x1,y1,y2:integer;color:byte);
  345.    var keer:byte;
  346.       begin
  347.          for keer:= 1 to 33 do
  348.             begin
  349.                ylijn(x1,y1,y2,color);
  350.                x1:=x1+4;
  351.             end;
  352.       end;
  353.  
  354. procedure writerec;
  355.    begin
  356.       if ((vx1<>x5) or (vy1<>y5)) then
  357.          begin
  358.             for i:=0 to 7 do for j:=0 to 7 do
  359.                begin
  360.                   if scrn[j+vy1,i+vx1]=muisc[j,i] then scrn[j+vy1,i+vx1]:=bg^[j,i];
  361.                end;
  362.             vx1:=x5;vy1:=y5;
  363.             for i:=0 to 7 do for j:=0 to 7 do
  364.                begin
  365.                   bg^[j,i]:=scrn[y5+j,x5+i];
  366.                   if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  367.                end;
  368.          end;
  369.    end;
  370.  
  371. procedure muisje;
  372.    begin
  373.       for i:=0 to 7 do for j:=0 to 7 do if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  374.    end;
  375.  
  376. procedure writelettertje(x,y:integer;letter:char;tst:byte);
  377.    var x1,y1:integer;
  378.        kleur:byte;
  379.       begin
  380.          for y1 := 1 to 5 do
  381.          for x1 := 1 to 3 do
  382.             begin
  383.                if tst=0 then kleur:=4;
  384.                if tst=1 then kleur:=0;
  385.                if tst=2 then kleur:=15;
  386.                if tst=3 then kleur:=28;
  387.                if letter='\' then letter:='/';
  388.                if (font2[letter,y1,x1]<>0) then
  389.                scrn[y+y1-1,x+x1-1]:=kleur;
  390.                if (font2[letter,y1,x1]=25) then
  391.                scrn[y+y1-1,x+x1-1]:=120;
  392.             end;
  393.       end;
  394.  
  395. procedure writewoordje(x1,y1:integer;woordje:string;ts:byte);
  396.    begin
  397.       for i:=0 to (length(woordje)-1) do
  398.          begin
  399.             writelettertje(x1+(i*4),y1,woordje[i+1],ts);
  400.          end;
  401.    end;
  402.  
  403. procedure indruk(x1,x2,y1,y2:integer;x3,y3:byte;tekst:woord);
  404.    begin
  405.       kader2(x1,x2,y1,y2,2,1);
  406.       vulvlak(x1+2,x2-2,y1+2,y2-2,120);
  407.       writewoordje(x3,y3,tekst,3);
  408.       if tekst='' then zetpijlen(77,x3,y3);
  409.          repeat
  410.             if st=true then
  411.                begin
  412.                   for i:=0 to 7do for j:=0 to 7 do
  413.                   if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  414.                end;
  415.          until knop(1)=false;
  416.       kader2(x1,x2,y1,y2,10,0);
  417.       vulvlak(x1+2,x2-2,y1+2,y2-2,2);
  418.       writewoordje(x3,y3,tekst,2);
  419.       if tekst='' then zetpijlen(77,x3,y3);
  420.       if st=true then
  421.          begin
  422.             for i:=0 to 7 do for j:=0 to 7 do
  423.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  424.          end;
  425.    end;
  426.  
  427. procedure saveicon;
  428. var f1,f2:file;
  429.     sub:array[0..127] of byte;
  430. begin
  431. assign(f1,'spriter.dat');
  432. reset(f1,1);
  433. seek(f1,1732);
  434. assign(f2,pad+fil2);
  435. rewrite(f2,1);
  436. blockread(f1,sub,126);blockwrite(f2,sub,126);
  437. for ytje:=31 downto 0 do
  438. for xje:=0 to 15 do
  439. begin
  440.   i:=iga[k10,xje*2,ytje];
  441.   i:=i shl 4;
  442.   j:=iga[k10,xje*2+1,ytje];
  443.   savclr:=i+j;
  444.   blockwrite(f2,savclr,1);
  445.   (*blockread(f,savclr,1);
  446.   i:=(savclr div 16){+240};
  447.   j:=(savclr mod 16){+240};
  448.   if i=240 then i:=0;
  449.   if j=240 then j:=0;
  450.   putpixel((xje*2)+153,ytje+16,i);
  451.   putpixel((xje*2)+154,ytje+16,j);
  452.   ytje2:=(ytje)*4+5;
  453.   vulvlak(xje*8+5,(xje*8)+7,ytje2,ytje2+2,i);
  454.   vulvlak((xje*8)+9,(xje*8)+11,ytje2,ytje2+2,j);
  455.   iga[k10,xje*2,ytje]:=i;
  456.   iga[k10,xje*2+1,ytje]:=j;*)
  457. end;
  458. blockread(f1,sub,128);blockwrite(f2,sub,128);
  459. close(f2);
  460. close(f1);
  461. end;
  462.  
  463. procedure save;
  464.    var loop:byte;
  465.        ch:char;
  466.        dol:boolean;
  467.        dim:string[4];
  468.        x32,y32,aantal:byte;
  469.       begin
  470.          for i:=0 to 127 do keyss[i]:=false;
  471.          indruk(5,31,144,154,11,147,'SAVE');
  472.          vulvlak(150,308,88,104,2);
  473.          if copy (fil2,sizeof(fil2)-3,3)='ICO'then saveicon else
  474.          begin
  475.          assign(f,pad+fil2);
  476.          {$I-}
  477.          reset(f,1);
  478.          close(f);
  479.          {$I+}
  480.          if ioresult <> 0 then dol:=true else
  481.             begin
  482.                writewoordje(150,88,'WARNING: FILE ALREADY EXISTS.',0);
  483.                writewoordje(150,94,'DO YOU WISH TO OVERWRITE <Y\N> ',1);
  484.                writewoordje(150,100,pad+fil2,1);
  485.                   repeat
  486.                      if keyss[21] then
  487.                         begin
  488.                            writewoordje(262,94,'N',1);
  489.                            writewoordje(254,94,'Y',2);
  490.                            dol:=true;
  491.                            keyss[21]:=false;
  492.                         end;
  493.                      if keyss[49] then
  494.                         begin
  495.                            writewoordje(254,94,'Y',1);
  496.                            writewoordje(262,94,'N',2);
  497.                            dol:=false;
  498.                            keyss[49]:=false;
  499.                         end;
  500.                      if keyss[28] then j:=1;
  501.                   until j=1;
  502.                for i:=0 to 127 do keyss[i]:=false;
  503.                vulvlak(150,308,88,104,2);
  504.             end;
  505.          if dol=true then
  506.             begin
  507.                {$I-}
  508.                rewrite(f,1);
  509.                {$I+}
  510.                if ioresult <> 0 then
  511.                   begin
  512.                      writewoordje(150,88,'WRITE ERROR: PATH NOT FOUND.',0);
  513.                      writewoordje(150,94,'UNABLE TO SAVE :',1);
  514.                      writewoordje(150,100,pad+fil2,1);
  515.                   end
  516.                   else
  517.                      begin
  518.                         dim:='IGA';
  519.                         aantal:=k9;
  520.                         y32:=(rky2-rky1)+1;
  521.                         x32:=(rkx2-rkx1)+1;
  522.                         blockwrite(f,dim[1],3);
  523.                         loop:=1;
  524.                         blockwrite(f,loop,1);
  525.                         blockwrite(f,aantal,1);
  526.                         blockwrite(f,y32,1);
  527.                         blockwrite(f,x32,1);
  528.                          for aantal:=k7 to k8 do
  529.                          for ytje:=rky1 to rky2 do
  530.                            for xje:=rkx1 to rkx2 do
  531.  
  532.                            begin
  533.                               blockwrite(f,iga[aantal{k10},xje,ytje],1);
  534.                            end;
  535.                         close(f);
  536.                      end;
  537.             end;
  538.         end;
  539.       end;
  540.  
  541.  
  542. procedure quit;
  543.    begin
  544.       indruk(5,31,156,166,11,159,'QUIT');
  545.       rep:=1;
  546.       sel:=true;
  547.       zet:=true;
  548.    end;
  549.  
  550. procedure clear;
  551.    begin
  552.       indruk(5,31,174,184,9,177,'CLEAR');
  553.       for ytje:=16 to 47 do
  554.       for xje:=153 to 184 do
  555.          begin
  556.             iga[k10,xje-153,ytje-16]:=0;
  557.             putpixel(xje,ytje,0);
  558.             xje2:=(xje-153)*4+5;ytje2:=(ytje-16)*4+5;
  559.             vulvlak(xje2,xje2+2,ytje2,ytje2+2,0);
  560.          end;
  561.       if st=true then
  562.          begin
  563.             for i:=0 to 7 do for j:=0 to 7 do
  564.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  565.          end;
  566.    end;
  567.  
  568. procedure cut;
  569.    begin
  570.       indruk(33,59,186,196,41,189,'CUT');
  571.       for ytje:=rky1+16 to rky2+16 do
  572.       for xje:=rkx1+153 to rkx2+153 do
  573.          begin
  574.             iga[k10,xje-153,ytje-16]:=0;
  575.             putpixel(xje,ytje,0);
  576.             xje2:=(xje-153)*4+5;ytje2:=(ytje-16)*4+5;
  577.             vulvlak(xje2,xje2+2,ytje2,ytje2+2,0);
  578.          end;
  579.       if st=true then
  580.          begin
  581.             for i:=0 to 7 do for j:=0 to 7 do
  582.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  583.          end;
  584.    end;
  585.  
  586. procedure copie;
  587. begin
  588.   indruk(33,59,174,184,39,177,'COPY');
  589.   for i:=0 to 31 do
  590.     for j:=0 to 31 do
  591.       clip^[i,j]:=0;
  592.   dum2[1]:=rkx2-rkx1+1;
  593.   dum2[2]:=rky2-rky1+1;
  594.   for i:=0 to dum2[1] do
  595.     for j:=0 to dum2[2] do
  596.       clip^[i,j]:=iga[k10,rkx1+i,rky1+j];
  597. end;
  598.  
  599. procedure paste;
  600. begin
  601.   kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,123);
  602.   indruk(5,31,186,196,9,189,'PASTE');
  603.   rkx2:=rkx1+dum2[1]-1;
  604.   if rkx2>31 then rkx2:=31;
  605.   rky2:=rky1+dum2[2]-1;
  606.   if rky2>31 then rky2:=31;
  607.   for i:=0 to dum2[1]-1 do
  608.     for j:=0 to dum2[2]-1 do
  609.       begin
  610.         if (rkx1+i<32) then
  611.            if (rky1+j<32) then
  612.            begin
  613.            iga[k10,rkx1+i,rky1+j]:=clip^[i,j];
  614.            putpixel(rkx1+i+153,rky1+j+16,clip^[i,j]);
  615.            vulvlak(((rkx1+i+1)*4)+1,((rkx1+i+1)*4)+3,((rky1+j+1)*4)+1,((rky1+j+1)*4)+3,clip^[i,j])
  616.            end else ;
  617.       end;
  618. kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  619. end;
  620.  
  621. procedure loadicon;
  622. begin
  623. reset(f,1);
  624. for j:=1 to 126 do blockread(f,savclr,1);
  625. {for i:=1 to 16 do begin blockread(f,rgb,3); setrgbpalette(i,rgb[1],rgb[2],rgb[3]);end;}
  626. for ytje:=31 downto 0 do
  627. for xje:=0 to 15 do
  628. begin
  629.   blockread(f,savclr,1);
  630.   i:=(savclr div 16){+240};
  631.   j:=(savclr mod 16){+240};
  632.   if i=240 then i:=0;
  633.   if j=240 then j:=0;
  634.   putpixel((xje*2)+153,ytje+16,i);
  635.   putpixel((xje*2)+154,ytje+16,j);
  636.   ytje2:=(ytje)*4+5;
  637.   vulvlak(xje*8+5,(xje*8)+7,ytje2,ytje2+2,i);
  638.   vulvlak((xje*8)+9,(xje*8)+11,ytje2,ytje2+2,j);
  639.   iga[k10,xje*2,ytje]:=i;
  640.   iga[k10,xje*2+1,ytje]:=j;
  641. end;
  642. end;
  643.  
  644. procedure load;
  645.    var loop1,loop2:byte;
  646.        dim:string[4];
  647.    begin
  648.       indruk(33,59,144,154,39,147,'LOAD');
  649.       vulvlak(150,308,88,104,2);
  650.       if st=true then
  651.          begin
  652.             for i:=0 to 7 do for j:=0 to 7 do
  653.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  654.          end;
  655.       kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,123);
  656.       assign(f,pad+fil1);
  657.       {$I-}
  658.       reset(f,1);
  659.       {$I+}
  660.       if ioresult<>0 then
  661.          begin
  662.             writewoordje(150,88,'FILE NOT FOUND.',0);
  663.             writewoordje(150,94,'UNABLE TO LOAD :',1);
  664.             writewoordje(150,100,pad+fil1,1);
  665.          end
  666.          else
  667.             if copy (fil1,sizeof(fil1)-3,3)='ICO'then loadicon else
  668.             begin
  669.                {for ytje:=16 to 47 do
  670.                for xje:=153 to 184 do
  671.                   begin
  672.                      putpixel(xje,ytje,0);
  673.                      xje2:=(xje-153)*4+5;ytje2:=(ytje-16)*4+5;
  674.                      vulvlak(xje2,xje2+2,ytje2,ytje2+2,0);
  675.                   end;}
  676.                rkx1:=0;rky1:=0;
  677.                blockread(f,dim,3);
  678.                blockread(f,loop2,1);
  679.                blockread(f,loop1,1);
  680.                blockread(f,rky2,1);
  681.                blockread(f,rkx2,1);
  682.                rky2:=rky2-1;rkx2:=rkx2-1;
  683.                if filesize(f)<>(((rkx2+1)*(rky2+1)*(loop1))+7) then
  684.                   begin
  685.                      writewoordje(150,88,'FORMAT NOT CORRECT.',0);
  686.                      writewoordje(150,94,'UNABLE TO LOAD :',1);
  687.                      writewoordje(150,100,pad+fil1,1);
  688.                   end
  689.                   else
  690.                      begin
  691.                         for loop2:=1 to loop1 do
  692.                         for ytje:=rky1+16 to rky2+16 do
  693.                         for xje:=rkx1+153 to rkx2+153 do
  694.                            begin
  695.                               blockread(f,savclr,1);
  696.                               {putpixel(xje,ytje,savclr);
  697.                               xje2:=(xje-153)*4+5;ytje2:=(ytje-16)*4+5;
  698.                               vulvlak(xje2,xje2+2,ytje2,ytje2+2,savclr);}
  699.                               iga[k10+loop2-1,xje-153,ytje-16]:=savclr;
  700.                            end;
  701.                         for ytje:=rky1+16 to rky2+16 do
  702.                         for xje:=rkx1+153 to rkx2+153 do
  703.                            begin
  704.                              putpixel(xje,ytje,iga[k10,xje-153,ytje-16]);
  705.                              xje2:=(xje-153)*4+5;ytje2:=(ytje-16)*4+5;
  706.                              vulvlak(xje2,xje2+2,ytje2,ytje2+2,iga[k10,xje-153,ytje-16]);
  707.                            end;
  708.                      end;
  709.                close(f);
  710.             end;
  711.       kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  712.    end;
  713.  
  714. procedure format;
  715.    var rk:array[1..4] of integer;
  716.        ooh,doen:boolean;
  717.        rx1,ry1,rx2,ry2:integer;
  718.        hlpx,hlpy,hlpx2,hlpy2:integer;
  719.       begin
  720.          rx1:=rkx1;rx2:=rkx2;ry1:=rky1;ry2:=rky2;
  721.          indruk(33,59,156,166,39,159,'SIZE');
  722.          kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,123);
  723.          writerec;
  724.          if st=true then
  725.             begin
  726.                repeat
  727.                   x5:=muisx;
  728.                   y5:=muisy;
  729.                   if knop(1) then doen:=true;
  730.                   if (x5<4) or (x5>131) or (y5<4) or (y5>131) then doen:=false;
  731.                   writerec;
  732.                   if keyss[1] then
  733.                      begin
  734.                         ooh:=true;
  735.                         doen:=true;
  736.                      end;
  737.                until doen=true;
  738.                repeat
  739.                until knop(1)=false;
  740.                if ooh=false then doen:=false;
  741.                rkx1:=round((x5-1) div 4)-1;
  742.                rky1:=round((y5-1) div 4)-1;
  743.                if ooh=false then
  744.                   repeat
  745.                      x5:=muisx;
  746.                      y5:=muisy;
  747.                      if knop(1)=true then doen:=true;
  748.                      if (x5<4) or (x5>131) or (y5<4) or (y5>131) then doen:=false;
  749.                      writerec;
  750.                      if keyss[1] then
  751.                         begin
  752.                            keyss[1]:=false;
  753.                            ooh:=true;
  754.                            doen:=true;
  755.                         end;
  756.                   until doen=true;
  757.                rkx2:=round((x5-1) div 4)-1;
  758.                rky2:=round((y5-1) div 4)-1;
  759.                repeat
  760.                until knop(1)=false;
  761.             end;
  762.          if st=false then
  763.             begin
  764.                j:=1;
  765.                   repeat
  766.                      if (kx3<>kx4) or (ky3<>ky4) then
  767.                         begin
  768.                            kadertje(kx4,kx4+4,ky4,ky4+4,123);
  769.                            kadertje(kx3,kx3+4,ky3,ky3+4,15);
  770.                         end;
  771.                      kx4:=kx3;ky4:=ky3;
  772.                      if keyss[72] then
  773.                         begin
  774.                            ky3:=ky3-4;ky5:=ky5-1;
  775.                            if ky3<4 then
  776.                               begin
  777.                                  ky3:=128;
  778.                                  ky5:=47;
  779.                               end;
  780.                            keyss[72]:=false;
  781.                         end;
  782.                      if keyss[75] then
  783.                         begin
  784.                            kx3:=kx3-4;kx5:=kx5-1;
  785.                            if kx3<4 then
  786.                               begin
  787.                                  kx3:=128;
  788.                                  kx5:=184;
  789.                               end;
  790.                            keyss[75]:=false;
  791.                         end;
  792.                      if keyss[77] then
  793.                         begin
  794.                            kx3:=kx3+4;kx5:=kx5+1;
  795.                            if kx3>128 then
  796.                               begin
  797.                                  kx3:=4;
  798.                                  kx5:=153;
  799.                               end;
  800.                            keyss[77]:=false;
  801.                         end;
  802.                      if keyss[80] then
  803.                         begin
  804.                            ky3:=ky3+4;ky5:=ky5+1;
  805.                            if ky3>128 then
  806.                               begin
  807.                                  ky3:=4;
  808.                                  ky5:=16;
  809.                               end;
  810.                            keyss[80]:=false;
  811.                         end;
  812.                      if keyss[57] then
  813.                         begin
  814.                            if j=1 then
  815.                               begin
  816.                                  rkx1:=round((kx3-4) div 4);
  817.                                  rky1:=round((ky3-4) div 4);
  818.                               end;
  819.                            if j=2 then
  820.                               begin
  821.                                  rkx2:=round((kx3-4) div 4);
  822.                                  rky2:=round((ky3-4) div 4);
  823.                                  doen:=true
  824.                               end;
  825.                            keyss[57]:=false;
  826.                            j:=j+1;
  827.                         end;
  828.                      if keyss[1] then
  829.                         begin
  830.                            keyss[1]:=false;
  831.                            ooh:=true;
  832.                            doen:=true;
  833.                         end;
  834.                      kadertje(kx3,kx3+4,ky3,ky3+4,15);
  835.                   until doen=true;
  836.                kadertje(kx3,kx3+4,ky3,ky3+4,123);
  837.                for i:=0 to 127 do
  838.                   keyss[i]:=false;
  839.             end;
  840.          if ooh=true then
  841.             begin
  842.                rkx1:=rx1;rkx2:=rx2;rky1:=ry1;rky2:=ry2;
  843.             end;
  844.          if rkx1>rkx2 then
  845.             begin
  846.                hlpx:=rkx1;rkx1:=rkx2;rkx2:=hlpx;
  847.             end;
  848.          if rky1>rky2 then
  849.             begin
  850.                hlpy:=rky1;rky1:=rky2;rky2:=hlpy;
  851.             end;
  852.          kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  853.          vulvlak(302,310,155,161,0);
  854.          vulvlak(302,310,165,171,0);
  855.          vulvlak(274,282,155,161,0);
  856.          vulvlak(274,282,165,171,0);
  857.          vulvlak(247,255,155,161,0);
  858.          vulvlak(247,255,165,171,0);
  859.          k1:=rkx1+1;k2:=rkx2+1;k3:=k2-rkx1;
  860.          k4:=rky1+1;k5:=rky2+1;k6:=k5-rky1;
  861.          streef(k1,248,156);
  862.          streef(k2,275,156);
  863.          streef(k3,303,156);
  864.          streef(k4,248,166);
  865.          streef(k5,275,166);
  866.          streef(k6,303,166);
  867.          if st=true then writerec;
  868.       end;
  869.  
  870. procedure roset;forward;
  871.  
  872. procedure rset;
  873.    begin
  874.       indruk(232,314,178,194,249,182,'reset');
  875.       roset;
  876.    end;
  877.  
  878. procedure muisweg;
  879.    begin
  880.       for i:=0 to 7 do for j:=0 to 7 do
  881.          begin
  882.             scrn[j+vy1,i+vx1]:=bg^[j,i];
  883.          end;
  884.    end;
  885.  
  886. procedure muisterug;
  887.    begin
  888.       for i:=0 to 7 do for j:=0 to 7 do
  889.          begin
  890.             bg^[j,i]:=scrn[j+vy1,i+vx1];
  891.          end;
  892.       muisje;
  893.    end;
  894.  
  895. procedure haalnaam(x,y,b:integer;d:byte);
  896.    var ch:char;
  897.        ok:boolean;
  898.        a:string[41];
  899.       begin
  900.          for i:=1 to b+3 do a[i]:=' ';
  901.          if d=5 then for i:=1 to length(pad) do a[i]:=pad[i];
  902.          {if d=6 then begin str(dum3,a); if dum3<10 then dum:='0'+dum[1]+'   ';end;}
  903.          ok:=false;
  904.          j:=1;
  905.          if d=5 then if length(pad)<b then j:=length(pad)+1 else j:=b;
  906.             repeat
  907.                if d<>6 then
  908.                begin
  909.                if (d=5) and keyss[86] then
  910.                   begin
  911.                      ch:='\';
  912.                      a[j]:=ch;
  913.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  914.                      writelettertje((x+(j*4)),y,ch,2);
  915.                      if j<b then j:=j+1;
  916.                      keyss[86]:=false;
  917.                   end;
  918.                if (d=5) and keyss[52] then
  919.                   begin
  920.                      ch:=':';
  921.                      a[j]:=ch;
  922.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  923.                      writelettertje((x+(j*4)),y,ch,2);
  924.                      if j<b then j:=j+1;
  925.                      keyss[52]:=false;
  926.                   end;
  927.                if (d=5) and keyss[51] then
  928.                   begin
  929.                      ch:='.';
  930.                      a[j]:=ch;
  931.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  932.                      writelettertje((x+(j*4)),y,ch,2);
  933.                      if j<b then j:=j+1;
  934.                      keyss[51]:=false;
  935.                   end;
  936.                if (d=5) and keyss[83] then
  937.                   begin
  938.                      ch:='.';
  939.                      a[j]:=ch;
  940.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  941.                      writelettertje((x+(j*4)),y,ch,2);
  942.                      if j<b then j:=j+1;
  943.                      keyss[83]:=false;
  944.                   end;
  945.                if keyss[16] then
  946.                   begin
  947.                      ch:='A';
  948.                      a[j]:=ch;
  949.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  950.                      writelettertje((x+(j*4)),y,ch,2);
  951.                      if j<b then j:=j+1;
  952.                      keyss[16]:=false;
  953.                   end;
  954.                if keyss[17] then
  955.                   begin
  956.                      ch:='Z';
  957.                      a[j]:=ch;
  958.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  959.                      writelettertje((x+(j*4)),y,ch,2);
  960.                      if j<b then j:=j+1;
  961.                      keyss[17]:=false;
  962.                   end;
  963.                if keyss[18] then
  964.                   begin
  965.                      ch:='E';
  966.                      a[j]:=ch;
  967.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  968.                      writelettertje((x+(j*4)),y,ch,2);
  969.                      if j<b then j:=j+1;
  970.                      keyss[18]:=false;
  971.                   end;
  972.                if keyss[19] then
  973.                   begin
  974.                      ch:='R';
  975.                      a[j]:=ch;
  976.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  977.                      writelettertje((x+(j*4)),y,ch,2);
  978.                      if j<b then j:=j+1;
  979.                      keyss[19]:=false;
  980.                   end;
  981.                if keyss[20] then
  982.                   begin
  983.                      ch:='T';
  984.                      a[j]:=ch;
  985.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  986.                      writelettertje((x+(j*4)),y,ch,2);
  987.                      if j<b then j:=j+1;
  988.                      keyss[20]:=false;
  989.                   end;
  990.                if keyss[21] then
  991.                   begin
  992.                      ch:='Y';
  993.                      a[j]:=ch;
  994.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  995.                      writelettertje((x+(j*4)),y,ch,2);
  996.                      if j<b then j:=j+1;
  997.                      keyss[21]:=false;
  998.                   end;
  999.                if keyss[22] then
  1000.                   begin
  1001.                      ch:='U';
  1002.                      a[j]:=ch;
  1003.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1004.                      writelettertje((x+(j*4)),y,ch,2);
  1005.                      if j<b then j:=j+1;
  1006.                      keyss[22]:=false;
  1007.                   end;
  1008.                if keyss[23] then
  1009.                   begin
  1010.                      ch:='I';
  1011.                      a[j]:=ch;
  1012.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1013.                      writelettertje((x+(j*4)),y,ch,2);
  1014.                      if j<b then j:=j+1;
  1015.                      keyss[23]:=false;
  1016.                   end;
  1017.                if keyss[24] then
  1018.                   begin
  1019.                      ch:='O';
  1020.                      a[j]:=ch;
  1021.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1022.                      writelettertje((x+(j*4)),y,ch,2);
  1023.                      if j<b then j:=j+1;
  1024.                      keyss[24]:=false;
  1025.                   end;
  1026.                if keyss[25] then
  1027.                   begin
  1028.                      ch:='P';
  1029.                      a[j]:=ch;
  1030.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1031.                      writelettertje((x+(j*4)),y,ch,2);
  1032.                      if j<b then j:=j+1;
  1033.                      keyss[25]:=false;
  1034.                   end;
  1035.                if keyss[30] then
  1036.                   begin
  1037.                      ch:='Q';
  1038.                      a[j]:=ch;
  1039.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1040.                      writelettertje((x+(j*4)),y,ch,2);
  1041.                      if j<b then j:=j+1;
  1042.                      keyss[30]:=false;
  1043.                   end;
  1044.                if keyss[31] then
  1045.                   begin
  1046.                      ch:='S';
  1047.                      a[j]:=ch;
  1048.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1049.                      writelettertje((x+(j*4)),y,ch,2);
  1050.                      if j<b then j:=j+1;
  1051.                      keyss[31]:=false;
  1052.                   end;
  1053.                if keyss[32] then
  1054.                   begin
  1055.                      ch:='D';
  1056.                      a[j]:=ch;
  1057.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1058.                      writelettertje((x+(j*4)),y,ch,2);
  1059.                      if j<b then j:=j+1;
  1060.                      keyss[32]:=false;
  1061.                   end;
  1062.                if keyss[33] then
  1063.                   begin
  1064.                      ch:='F';
  1065.                      a[j]:=ch;
  1066.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1067.                      writelettertje((x+(j*4)),y,ch,2);
  1068.                      if j<b then j:=j+1;
  1069.                      keyss[33]:=false;
  1070.                   end;
  1071.                if keyss[34] then
  1072.                   begin
  1073.                      ch:='G';
  1074.                      a[j]:=ch;
  1075.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1076.                      writelettertje((x+(j*4)),y,ch,2);
  1077.                      if j<b then j:=j+1;
  1078.                      keyss[34]:=false;
  1079.                   end;
  1080.                if keyss[35] then
  1081.                   begin
  1082.                      ch:='H';
  1083.                      a[j]:=ch;
  1084.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1085.                      writelettertje((x+(j*4)),y,ch,2);
  1086.                      if j<b then j:=j+1;
  1087.                      keyss[35]:=false;
  1088.                   end;
  1089.                if keyss[36] then
  1090.                   begin
  1091.                      ch:='J';
  1092.                      a[j]:=ch;
  1093.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1094.                      writelettertje((x+(j*4)),y,ch,2);
  1095.                      if j<b then j:=j+1;
  1096.                      keyss[36]:=false;
  1097.                   end;
  1098.                if keyss[37] then
  1099.                   begin
  1100.                      ch:='K';
  1101.                      a[j]:=ch;
  1102.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1103.                      writelettertje((x+(j*4)),y,ch,2);
  1104.                      if j<b then j:=j+1;
  1105.                      keyss[37]:=false;
  1106.                   end;
  1107.                if keyss[38] then
  1108.                   begin
  1109.                      ch:='L';
  1110.                      a[j]:=ch;
  1111.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1112.                      writelettertje((x+(j*4)),y,ch,2);
  1113.                      if j<b then j:=j+1;
  1114.                      keyss[38]:=false;
  1115.                   end;
  1116.                if keyss[39] then
  1117.                   begin
  1118.                      ch:='M';
  1119.                      a[j]:=ch;
  1120.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1121.                      writelettertje((x+(j*4)),y,ch,2);
  1122.                      if j<b then j:=j+1;
  1123.                      keyss[39]:=false;
  1124.                   end;
  1125.                if keyss[44] then
  1126.                   begin
  1127.                      ch:='W';
  1128.                      a[j]:=ch;
  1129.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1130.                      writelettertje((x+(j*4)),y,ch,2);
  1131.                      if j<b then j:=j+1;
  1132.                      keyss[44]:=false;
  1133.                   end;
  1134.                if keyss[45] then
  1135.                   begin
  1136.                      ch:='X';
  1137.                      a[j]:=ch;
  1138.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1139.                      writelettertje((x+(j*4)),y,ch,2);
  1140.                      if j<b then j:=j+1;
  1141.                      keyss[45]:=false;
  1142.                   end;
  1143.                if keyss[46] then
  1144.                   begin
  1145.                      ch:='C';
  1146.                      a[j]:=ch;
  1147.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1148.                      writelettertje((x+(j*4)),y,ch,2);
  1149.                      if j<b then j:=j+1;
  1150.                      keyss[46]:=false;
  1151.                   end;
  1152.                if keyss[47] then
  1153.                   begin
  1154.                      ch:='V';
  1155.                      a[j]:=ch;
  1156.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1157.                      writelettertje((x+(j*4)),y,ch,2);
  1158.                      if j<b then j:=j+1;
  1159.                      keyss[47]:=false;
  1160.                   end;
  1161.                if keyss[48] then
  1162.                   begin
  1163.                      ch:='B';
  1164.                      a[j]:=ch;
  1165.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1166.                      writelettertje((x+(j*4)),y,ch,2);
  1167.                      if j<b then j:=j+1;
  1168.                      keyss[48]:=false;
  1169.                   end;
  1170.                if keyss[49] then
  1171.                   begin
  1172.                      ch:='N';
  1173.                      a[j]:=ch;
  1174.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1175.                      writelettertje((x+(j*4)),y,ch,2);
  1176.                      if j<b then j:=j+1;
  1177.                      keyss[49]:=false;
  1178.                   end;
  1179.                end;
  1180.                if keyss[71] then
  1181.                   begin
  1182.                      ch:='7';
  1183.                      a[j]:=ch;
  1184.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1185.                      writelettertje((x+(j*4)),y,ch,2);
  1186.                      if j<b then j:=j+1;
  1187.                      keyss[71]:=false;
  1188.                   end;
  1189.                if keyss[72] then
  1190.                   begin
  1191.                      ch:='8';
  1192.                      a[j]:=ch;
  1193.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1194.                      writelettertje((x+(j*4)),y,ch,2);
  1195.                      if j<b then j:=j+1;
  1196.                      keyss[72]:=false;
  1197.                   end;
  1198.                if keyss[73] then
  1199.                   begin
  1200.                      ch:='9';
  1201.                      a[j]:=ch;
  1202.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1203.                      writelettertje((x+(j*4)),y,ch,2);
  1204.                      if j<b then j:=j+1;
  1205.                      keyss[73]:=false;
  1206.                   end;
  1207.                if keyss[75] then
  1208.                   begin
  1209.                      ch:='4';
  1210.                      a[j]:=ch;
  1211.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1212.                      writelettertje((x+(j*4)),y,ch,2);
  1213.                      if j<b then j:=j+1;
  1214.                      keyss[75]:=false;
  1215.                   end;
  1216.                if keyss[76] then
  1217.                   begin
  1218.                      ch:='5';
  1219.                      a[j]:=ch;
  1220.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1221.                      writelettertje((x+(j*4)),y,ch,2);
  1222.                      if j<b then j:=j+1;
  1223.                      keyss[76]:=false;
  1224.                   end;
  1225.                if keyss[77] then
  1226.                   begin
  1227.                      ch:='6';
  1228.                      a[j]:=ch;
  1229.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1230.                      writelettertje((x+(j*4)),y,ch,2);
  1231.                      if j<b then j:=j+1;
  1232.                      keyss[77]:=false;
  1233.                   end;
  1234.                if keyss[79] then
  1235.                   begin
  1236.                      ch:='1';
  1237.                      a[j]:=ch;
  1238.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1239.                      writelettertje((x+(j*4)),y,ch,2);
  1240.                      if j<b then j:=j+1;
  1241.                      keyss[79]:=false;
  1242.                   end;
  1243.                if keyss[80] then
  1244.                   begin
  1245.                      ch:='2';
  1246.                      a[j]:=ch;
  1247.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1248.                      writelettertje((x+(j*4)),y,ch,2);
  1249.                      if j<b then j:=j+1;
  1250.                      keyss[80]:=false;
  1251.                   end;
  1252.                if keyss[81] then
  1253.                   begin
  1254.                      ch:='3';
  1255.                      a[j]:=ch;
  1256.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1257.                      writelettertje((x+(j*4)),y,ch,2);
  1258.                      if j<b then j:=j+1;
  1259.                      keyss[81]:=false;
  1260.                   end;
  1261.                if keyss[82] then
  1262.                   begin
  1263.                      ch:='0';
  1264.                      a[j]:=ch;
  1265.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1266.                      writelettertje((x+(j*4)),y,ch,2);
  1267.                      if j<b then j:=j+1;
  1268.                      keyss[82]:=false;
  1269.                   end;
  1270.                {if d<>6 then
  1271.                begin}
  1272.                if keyss[57] then
  1273.                   begin
  1274.                      if d<>6 then ch:=' ' else ch:='0';
  1275.                      a[j]:=ch;
  1276.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1277.                      writelettertje((x+(j*4)),y,ch,2);
  1278.                      if j<b then j:=j+1;
  1279.                      keyss[57]:=false;
  1280.                   end;
  1281.                if keyss[14] then
  1282.                   begin
  1283.                      if d<>6 then ch:=' ' else ch:='0';
  1284.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1285.                      if j>1 then j:=j-1;
  1286.                      if j+1>=b then if a[j+1]<>' ' then j:=j+1;
  1287.                      a[j]:=ch;
  1288.                      vulvlak((x+(j*4)),(x+3+(j*4)),y,y+5,0);
  1289.                      writelettertje((x+(j*4)),y,ch,2);
  1290.                      keyss[14]:=false;
  1291.                   end;
  1292.                {end;}
  1293.                if keyss[28] then ok:=true;
  1294.                writelettertje((x+(j*4)),y+3,'-',2);
  1295.             until ok;
  1296.          writelettertje((x+(j*4)),y+3,'-',1);
  1297.          for i:=0 to 127 do keyss[i]:=false;
  1298.          if d=1 then for i:=1 to b do fil1[i]:=a[i];
  1299.          if d=2 then for i:=1 to b do fil1[i+9]:=a[i];
  1300.          if d=3 then for i:=1 to b do fil2[i]:=a[i];
  1301.          if d=4 then for i:=1 to b do fil2[i+9]:=a[i];
  1302.          if d=5 then
  1303.             begin
  1304.                if pos('   ',a) > 0 then
  1305.                   pad := copy(a,1,pos('   ',a)-1);
  1306.                if length(pad)>0 then if pad[length(pad)]<> '\' then if length(pad)<38 then pad:=pad + '\'
  1307.                else pad[38]:='\';
  1308.             end;
  1309.          if d=6 then
  1310.          begin
  1311.          if pos(' ',a) > 0 then
  1312.                   a := copy(a,1,pos(' ',a)-1);
  1313.          val(a,dum3,code);
  1314.          end;
  1315.       end;
  1316.  
  1317. procedure input(x:integer);
  1318.    begin
  1319.       if st=true then muisweg;
  1320.       if (x>=200) and (x<=233) then
  1321.          begin
  1322.             vulvlak(200,233,62,68,0);
  1323.             haalnaam(197,63,8,1);
  1324.          end;
  1325.       if (x>=235) and (x<=251) then
  1326.          begin
  1327.             vulvlak(235,249,62,68,0);
  1328.             haalnaam(233,63,3,2);
  1329.          end;
  1330.       if st=true then
  1331.          begin
  1332.             muisterug;
  1333.             for i:=0 to 7 do for j:=0 to 7 do
  1334.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  1335.          end;
  1336.    end;
  1337.  
  1338. procedure output(x:integer);
  1339.    begin
  1340.       if st=true then muisweg;
  1341.       if (x>=255) and (x<=286) then
  1342.          begin
  1343.             vulvlak(255,286,62,68,0);
  1344.             haalnaam(252,63,8,3);
  1345.          end;
  1346.       if (x>=290) and (x<=304) then
  1347.          begin
  1348.             vulvlak(290,302,62,68,0);
  1349.             haalnaam(288,63,3,4);
  1350.          end;
  1351.       if st=true then
  1352.          begin
  1353.             muisterug;
  1354.             for i:=0 to 7 do for j:=0 to 7 do
  1355.             if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  1356.          end;
  1357.    end;
  1358.  
  1359. procedure padput;
  1360.    begin
  1361.       if st=true then muisweg;
  1362.       haalnaam(149,120,38,5);
  1363.       vulvlak(151,305,119,125,0);
  1364.       writewoordje(153,120,pad,2);
  1365.       if st=true then muisterug;
  1366.    end;
  1367.  
  1368. {procedure selectkleur;
  1369.    begin
  1370.       repeat
  1371.          if rep<>1 then else exit;
  1372.          if (kx1<>kx2) or (ky1<>ky2) then
  1373.             begin
  1374.                kadertje(kx2,kx2+5,ky2,ky2+5,0);
  1375.             end;
  1376.          kx2:=kx1;ky2:=ky1;
  1377.          if keyss[72] then
  1378.             begin
  1379.                ky1:=ky1-5;
  1380.                if (ky1<144) and (kx1>196) then ky1:=184
  1381.                   else
  1382.                      if ky1<144 then ky1:=189;
  1383.                keyss[72]:=false;
  1384.                if (kleur1>21) and (kleur1<26) then kleur1:=kleur1+(8*26)
  1385.                   else
  1386.                      if (kleur1>=0) and (kleur1<22) then kleur1:=kleur1+(9*26)
  1387.                         else kleur1:=kleur1-26;
  1388.             end;
  1389.          if keyss[75] then
  1390.             begin
  1391.                kx1:=kx1-5;
  1392.                if (kx1<91) and (ky1=189) then kx1:=196
  1393.                   else
  1394.                      if kx1<91 then kx1:=216;
  1395.                keyss[75]:=false;
  1396.                if kleur1=234 then kleur1:=kleur1+21
  1397.                   else
  1398.                      if (kleur1=0) or (kleur1=26) or (kleur1=52) or (kleur1=78)
  1399.                      or (kleur1=104) or (kleur1=130) or (kleur1=156) or (kleur1=182)
  1400.                      or (kleur1=208) then kleur1:=kleur1+25
  1401.                         else
  1402.                            kleur1:=kleur1-1;
  1403.             end;
  1404.          if keyss[77] then
  1405.             begin
  1406.                kx1:=kx1+5;
  1407.                if (kx1>196) and (ky1=189) then kx1:=91
  1408.                   else
  1409.                      if kx1>216 then kx1:=91;
  1410.                keyss[77]:=false;
  1411.                if kleur1=255 then kleur1:=kleur1-21
  1412.                   else
  1413.                      if (kleur1=25) or (kleur1=51) or (kleur1=77) or (kleur1=103)
  1414.                      or (kleur1=129) or (kleur1=155) or (kleur1=181)
  1415.                      or (kleur1=207) or (kleur1=233) then kleur1:=kleur1-25
  1416.                         else
  1417.                            kleur1:=kleur1+1;
  1418.             end;
  1419.          if keyss[80] then
  1420.             begin
  1421.                ky1:=ky1+5;
  1422.                if (kx1>196) and (ky1>184) then ky1:=144
  1423.                   else
  1424.                      if ky1>189 then ky1:=144;
  1425.                keyss[80]:=false;
  1426.                if (kleur1<=233) and (kleur1>229) then kleur1:=kleur1-(8*26)
  1427.                   else
  1428.                      if (kleur1<=255) and (kleur1>233) then kleur1:=kleur1-(9*26)
  1429.                         else kleur1:=kleur1+26;
  1430.             end;
  1431.          if keyss[15] then
  1432.             begin
  1433.                sel:=true;
  1434.                keyss[15]:=false;
  1435.             end;
  1436.          if keyss[30] or keyss[1] then
  1437.             begin
  1438.                quit;
  1439.             end;
  1440.          kadertje(kx1,kx1+5,ky1,ky1+5,15);
  1441.          vulvlak(173,183,57,65,kleur1);
  1442.       until sel=true;
  1443.       sel:=false;
  1444.       for i:=0 to 127 do
  1445.          keyss[i]:=false;
  1446.    end;}
  1447.  
  1448. {procedure zetkleur;
  1449.    begin
  1450.       repeat
  1451.          if (kx3<>kx4) or (ky3<>ky4) then
  1452.             begin
  1453.                kadertje(kx4,kx4+4,ky4,ky4+4,123);
  1454.                kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  1455.                kadertje(kx3,kx3+4,ky3,ky3+4,15);
  1456.             end;
  1457.          kx4:=kx3;ky4:=ky3;
  1458.          if keyss[72] then
  1459.             begin
  1460.                ky3:=ky3-4;ky5:=ky5-1;
  1461.                if ky3<4 then
  1462.                   begin
  1463.                      ky3:=128;
  1464.                      ky5:=47;
  1465.                   end;
  1466.                keyss[72]:=false;
  1467.             end;
  1468.          if keyss[75] then
  1469.             begin
  1470.                kx3:=kx3-4;kx5:=kx5-1;
  1471.                if kx3<4 then
  1472.                   begin
  1473.                      kx3:=128;
  1474.                      kx5:=184;
  1475.                   end;
  1476.                keyss[75]:=false;
  1477.             end;
  1478.          if keyss[77] then
  1479.             begin
  1480.                kx3:=kx3+4;kx5:=kx5+1;
  1481.                if kx3>128 then
  1482.                   begin
  1483.                      kx3:=4;
  1484.                      kx5:=153;
  1485.                   end;
  1486.                keyss[77]:=false;
  1487.             end;
  1488.          if keyss[80] then
  1489.             begin
  1490.                ky3:=ky3+4;ky5:=ky5+1;
  1491.                if ky3>128 then
  1492.                   begin
  1493.                      ky3:=4;
  1494.                      ky5:=16;
  1495.                   end;
  1496.                keyss[80]:=false;
  1497.             end;
  1498.          if keyss[57] then
  1499.             begin
  1500.                vulvlak(kx3+1,kx3+3,ky3+1,ky3+3,kleur1);
  1501.                putpixel(kx5,ky5,kleur1);
  1502.             end;
  1503.          if keyss[14] then
  1504.             begin
  1505.                vulvlak(kx3+1,kx3+3,ky3+1,ky3+3,0);
  1506.                putpixel(kx5,ky5,0);
  1507.             end;
  1508.          if keyss[31] then
  1509.             begin
  1510.                save;
  1511.                keyss[31]:=false;
  1512.             end;
  1513.          if keyss[38] then
  1514.             begin
  1515.                load;
  1516.                keyss[38]:=false;
  1517.             end;
  1518.          if keyss[33] then
  1519.             begin
  1520.                kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,123);
  1521.                format;
  1522.                keyss[33]:=false;
  1523.                kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  1524.             end;
  1525.          if keyss[15] then
  1526.             begin
  1527.                keyss[15]:=false;
  1528.                zet:=true;
  1529.             end;
  1530.          if keyss[23] then
  1531.             begin
  1532.                keyss[23]:=false;
  1533.                input(201);
  1534.                input(236);
  1535.             end;
  1536.          if keyss[24] then
  1537.             begin
  1538.                keyss[24]:=false;
  1539.                output(256);
  1540.                output(291);
  1541.             end;
  1542.          if keyss[19] then
  1543.             begin
  1544.                rset;
  1545.                keyss[19]:=false;
  1546.             end;
  1547.          if keyss[46] then
  1548.             begin
  1549.                clear;
  1550.                keyss[46]:=false;
  1551.             end;
  1552.          if keyss[30] or keyss[1] then
  1553.             begin
  1554.                keyss[30]:=false;
  1555.                keyss[1]:=false;
  1556.                quit;
  1557.             end;
  1558.          if keyss[25] then
  1559.             begin
  1560.                keyss[25]:=false;
  1561.                padput;
  1562.             end;
  1563.          kadertje(kx3,kx3+4,ky3,ky3+4,15);
  1564.       until zet=true;
  1565.       zet:=false;
  1566.       for i:=0 to 127 do
  1567.          keyss[i]:=false;
  1568.    end;}
  1569.  
  1570. procedure getit;
  1571. begin
  1572. for ytje:=0 to 2 do
  1573. for xje:=0 to 4 do
  1574. begin
  1575. getpixel(77+xje,chk1+ytje);
  1576. derf^[ytje,xje]:=savclr;
  1577. end;
  1578. end;
  1579.  
  1580. procedure putit;
  1581. begin
  1582. for ytje:=0 to 2 do
  1583. for xje:=0 to 4 do
  1584. putpixel(77+xje,chk1+ytje,derf^[ytje,xje]);
  1585. end;
  1586.  
  1587. procedure zetdef;
  1588. var y38,x38:byte;
  1589. begin
  1590.   putit;
  1591.   y38 := 153+round((k10)/2);x38:=77;
  1592.   getit;
  1593.   for ytje:=0 to 2 do
  1594.   for xje:=0 to 4 do
  1595.   if def[ytje,xje]<>0 then putpixel(x38+xje,y38+ytje,def[ytje,xje]);
  1596.   chk1:=y38;
  1597. end;
  1598.  
  1599. procedure scherm;
  1600.    begin
  1601.       kader(0,136,0,138,2);               {Hoofdkader rond raster}
  1602.       kader(2,134,2,136,2);               {Overlappend 2de kader rond raster}
  1603.       kader(137,319,0,138,2);             {Kader rond help, etc.}
  1604.       kader(139,317,2,136,2);
  1605.       kader(141,315,4,134,2);
  1606.       kader2(143,313,6,132,49,0);
  1607.       kader2(146,192,9,74,49,0);
  1608.       kader(148,190,11,72,2);
  1609.       kader(150,188,13,70,2);
  1610.       kadertje(152,185,15,48,4);
  1611.       xlijn(152,185,49,2);
  1612.       ylijn(186,15,49,2);
  1613.       kader(152,186,50,53,2);
  1614.       kader2(146,310,76,129,49,0);
  1615.       kader2(194,310,9,74,49,0);
  1616.       vulvlak(148,308,78,127,2);
  1617.       vulvlak(196,308,11,72,2);
  1618.       kader(0,85,139,199,2);
  1619.       kader2(2,62,141,169,49,0);
  1620.       vulvlak(63,84,141,197,2);
  1621.       xlijn(2,62,170,2);
  1622.       kader2(2,62,171,199,49,0);
  1623.       kader(86,226,139,199,2);
  1624.       kader(169,170,51,72,2);
  1625.       kader2(170,186,54,68,49,0);
  1626.       kader2(152,168,54,68,49,0);
  1627.       kader2(88,224,141,197,49,0);
  1628.       kader2(5,31,144,154,49,0);
  1629.       kader2(33,59,144,154,49,0);
  1630.       kader2(5,31,156,166,49,0);
  1631.       kader2(33,59,156,166,49,0);
  1632.       kader2(5,31,174,184,49,0);
  1633.       kader2(33,59,174,184,49,0);
  1634.       kader2(5,31,186,196,49,0);
  1635.       kader2(33,59,186,196,49,0);
  1636.       kader2(74,84,140,150,49,0);{pijlenkader}
  1637.       ylijn(79,152,187,0);
  1638.       {vulvlak(77,81,155,183,0);}
  1639.       zetpijlen(77,143,0);
  1640.       kader2(74,84,151,188,49,0);
  1641.       kader2(74,84,189,199,49,0);
  1642.       zetpijlen(77,192,1);
  1643.       kadertje(73,85,139,199,0);
  1644.       kadertje(62,73,164,174,0);
  1645.       kadertje(63,73,165,173,49);
  1646.       vulvlak(64,72,166,172,0);
  1647.       streef(k10,65,167);
  1648.       {writewoordje(66,167,k10,2);}
  1649.       vulvlak(7,29,146,152,2);
  1650.       vulvlak(35,57,146,152,2);
  1651.       vulvlak(7,29,158,164,2);
  1652.       vulvlak(35,57,158,164,2);
  1653.       vulvlak(7,29,176,182,2);
  1654.       vulvlak(35,57,176,182,2);
  1655.       vulvlak(7,29,188,194,2);
  1656.       vulvlak(35,57,188,194,2);
  1657.       writewoordje(11,147,'SAVE',2);
  1658.       writewoordje(39,147,'LOAD',2);
  1659.       writewoordje(11,159,'QUIT',2);
  1660.       writewoordje(39,159,'SIZE',2);
  1661.       writewoordje(9,177,'CLEAR',2);
  1662.       writewoordje(39,177,'COPY',2);
  1663.       writewoordje(9,189,'PASTE',2);
  1664.       writewoordje(41,189,'CUT',2);
  1665.       kader(227,319,139,199,2);
  1666.       kader2(229,317,141,197,49,0);
  1667.       vulvlak(231,315,143,195,2);
  1668.       kadertje(3,133,3,134,0);
  1669.       kadertje(172,184,56,66,4);
  1670.       kadertje(154,166,56,66,4);
  1671.       xlijn(3,133,134,2);
  1672.       lijnen(91,144);
  1673.       xschaal(4,132,4,123);
  1674.       yschaal(4,4,132,123);
  1675.       kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  1676.       zetrandkl(2);
  1677.       writewoordje(210,14,'INSECABILIS PRESENTS:',0);
  1678.       xlijn(210,292,20,15);
  1679.       writewoordje(214,22,'SPRITE-EDITOR V1.01',1);
  1680.       xlijn(197,307,28,15);
  1681.       writewoordje(234,30,'CODED BY:',0);
  1682.       xlijn(234,268,36,15);
  1683.       writewoordje(234,38,'DISCORDIS',1);
  1684.       writewoordje(220,44,'(=DIMITRI SMITS)',1);
  1685.       xlijn(197,307,12,15);
  1686.       xlijn(197,307,50,15);
  1687.       xlijn(197,307,51,15);
  1688.       ylijn(252,52,70,15);
  1689.       xlijn(197,307,71,15);
  1690.       ylijn(197,52,70,15);
  1691.       ylijn(307,52,70,15);
  1692.       writewoordje(205,53,'INPUTFILE:',2);
  1693.       writewoordje(258,53,'OUTPUTFILE:',2);
  1694.       xlijn(198,306,59,15);
  1695.       vulvlak(200,249,62,68,0);
  1696.       vulvlak(255,304,62,68,0);
  1697.       writewoordje(201,63,fil1,2);
  1698.       writewoordje(256,63,fil2,2);
  1699.       ylijn(234,62,68,2);
  1700.       ylijn(289,62,68,2);
  1701.       writewoordje(150,80,'MESSAGES:',2);
  1702.       xlijn(150,184,86,15);
  1703.       xlijn(149,307,107,15);
  1704.       writewoordje(150,110,'PATH:',2);
  1705.       xlijn(150,168,116,15);
  1706.       vulvlak(151,305,119,125,0);
  1707.       writewoordje(153,120,pad,2);
  1708.       xlijn(232,314,144,15);
  1709.       xlijn(232,314,145,15);
  1710.       ylijn(232,145,191,15);
  1711.       ylijn(314,145,191,15);
  1712.       writewoordje(236,147,'FILE-INFO FOR SAVE:',1);
  1713.       xlijn(232,314,153,15);
  1714.       writewoordje(236,156,'X1:',2);
  1715.       ylijn(259,153,172,15);
  1716.       writewoordje(263,156,'X2:',2);
  1717.       ylijn(286,153,172,15);
  1718.       xlijn(232,314,163,15);
  1719.       writewoordje(236,166,'Y1:',2);
  1720.       writewoordje(263,166,'Y2:',2);
  1721.       writewoordje(290,156,'>',0);
  1722.       writewoordje(290,166,'>',0);
  1723.       writewoordje(294,156,'X:',2);
  1724.       writewoordje(294,166,'Y:',2);
  1725.       xlijn(232,314,173,15);
  1726.       xlijn(232,314,174,15);
  1727.       xlijn(232,314,182,15);
  1728.       xlijn(232,314,192,15);
  1729.       vulvlak(302,310,155,161,0);
  1730.       vulvlak(302,310,165,171,0);
  1731.       vulvlak(274,282,155,161,0);
  1732.       vulvlak(274,282,165,171,0);
  1733.       vulvlak(247,255,155,161,0);
  1734.       vulvlak(247,255,165,171,0);
  1735.       vulvlak(254,262,184,190,0);
  1736.       vulvlak(278,286,184,190,0);
  1737.       vulvlak(302,310,184,190,0);
  1738.       streef(k1,248,156);
  1739.       streef(k2,275,156);
  1740.       streef(k3,303,156);
  1741.       streef(k4,248,166);
  1742.       streef(k5,275,166);
  1743.       streef(k6,303,166);
  1744.       streef(k7,255,185);
  1745.       streef(k8,279,185);
  1746.       streef(k9,303,185);
  1747.       writewoordje(249,176,'PICS TO SAVE:',1);
  1748.       writewoordje(235,185,'FROM:   TO:    =',2);
  1749.       ylijn(264,183,191,15);
  1750.       ylijn(288,183,191,15);
  1751.       getit;
  1752.       zetdef;
  1753.    end;
  1754.  
  1755. procedure zetkl(x,y:integer;kleur:byte);
  1756.    var x1,y1:longint;
  1757.        x2,y2:integer;
  1758.       begin
  1759.          x1:=(trunc((x-4)/4)*4+4);
  1760.          y1:=(trunc((y-4)/4)*4+4);
  1761.          muisweg;
  1762.          vulvlak(x1+1,x1+3,y1+1,y1+3,kleur);
  1763.          muisterug;
  1764.          muisje;
  1765.          x2:=(x1 div 4)+152;y2:=(y1 div 4)+15;
  1766.          putpixel(x2,y2,kleur);
  1767.          x2:=(x1-1) div 4;y2:=(y1-1) div 4;
  1768.          iga[k10,x2,y2]:=kleur;
  1769.       end;
  1770.  
  1771. procedure haalkl(x,y:integer;c:byte);
  1772.    var x1,y1:longint;
  1773.       begin
  1774.          if (x>=200) and (x<=220) and (y>=188) and (y<=193) then else
  1775.          begin
  1776.          x1:=(trunc((x-91) div 5)*5)+92;
  1777.          y1:=(trunc((y-144) div 5)*5)+145;
  1778.          if c=1 then
  1779.             begin
  1780.                kleur1:=scrn[y1,x1];
  1781.                vulvlak(155,165,57,65,kleur1);
  1782.             end;
  1783.          if c=2 then
  1784.             begin
  1785.                kleur2:=scrn[y1,x1];
  1786.                vulvlak(173,183,57,65,kleur2);
  1787.             end;
  1788.         end;
  1789.       end;
  1790.  
  1791. procedure schrijfin(x9,y9:integer;var g:byte);
  1792. begin
  1793.    muisweg;
  1794.    dum3:=g;
  1795.    if (g=k1) or (g=k2) or (g=k4) or (g=k5) then kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,123);
  1796.    haalnaam(x9-3,y9+1,2,6);
  1797.    if (g=k10) or (g=k7) or (g=k8) then if dum3>60 then g:=60 else if dum3<1 then g:=1 else g:=dum3;
  1798.    if (g=k1) or (g=k2) or (g=k4) or (g=k5) then if dum3>32 then g:=32 else if dum3<1 then g:=1 else g:=dum3;
  1799.    vulvlak(x9,x9+8,y9,y9+6,0);
  1800.    streef(g,x9+1,y9+1);
  1801.    if (g=k1) or (g=k2) or (g=k4) or (g=k5) then
  1802.      begin
  1803.      if k1>k2 then begin dum4:=k1;k1:=k2;k2:=dum4;end;
  1804.      if k4>k5 then begin dum4:=k4;k4:=k5;k5:=dum4;end;
  1805.      k3:=k2-k1+1;
  1806.      k6:=k5-k4+1;
  1807.      rkx1:=k1-1;
  1808.      rkx2:=k2-1;
  1809.      rky1:=k4-1;
  1810.      rky2:=k5-1;
  1811.      vulvlak(302,310,155,161,0);
  1812.      vulvlak(302,310,165,171,0);
  1813.      vulvlak(274,282,155,161,0);
  1814.      vulvlak(274,282,165,171,0);
  1815.      vulvlak(247,255,155,161,0);
  1816.      vulvlak(247,255,165,171,0);
  1817.      streef(k1,248,156);
  1818.      streef(k2,275,156);
  1819.      streef(k3,303,156);
  1820.      streef(k4,248,166);
  1821.      streef(k5,275,166);
  1822.      streef(k6,303,166);
  1823.      kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  1824.      end;
  1825.      if g=k7 then
  1826.         begin
  1827.           k9:=k8-k7+1;
  1828.           vulvlak(302,310,184,190,0);
  1829.           streef(k9,303,185);
  1830.         end;
  1831.      if g=k8 then
  1832.         begin
  1833.           k9:=k8-k7+1;
  1834.           vulvlak(302,310,184,190,0);
  1835.           streef(k9,303,185);
  1836.         end;
  1837.      if g=k10 then
  1838.     begin
  1839.     for i:=0 to 31 do
  1840.      for j:=0 to 31 do
  1841.         begin
  1842.           putpixel(j+153,i+16,iga[k10,j,i]);
  1843.           xje2:=j*4+5;ytje2:=i*4+5;
  1844.           vulvlak(xje2,xje2+2,ytje2,ytje2+2,iga[k10,j,i]);
  1845.         end;
  1846.    zetdef;
  1847.    end;
  1848.  
  1849.    muisterug;
  1850. end;
  1851.  
  1852. procedure knopbov;
  1853. begin
  1854.   indruk(74,84,140,150,143,0,'');
  1855.   if k10<>1 then k10:=k10-1 else k10:=1;
  1856.   vulvlak(64,72,166,172,0);
  1857.   streef(k10,65,167);
  1858.   for i:=0 to 31 do
  1859.      for j:=0 to 31 do
  1860.         begin
  1861.           putpixel(j+153,i+16,iga[k10,j,i]);
  1862.           xje2:=j*4+5;ytje2:=i*4+5;
  1863.           vulvlak(xje2,xje2+2,ytje2,ytje2+2,iga[k10,j,i]);
  1864.         end;
  1865.   zetdef;
  1866. end;
  1867.  
  1868. procedure knopond;
  1869. begin
  1870.   indruk(74,84,189,199,192,1,'');
  1871.   if k10<>60 then k10:=k10+1 else k10:=60;
  1872.   vulvlak(64,72,166,172,0);
  1873.   streef(k10,65,167);
  1874.   for i:=0 to 31 do
  1875.      for j:=0 to 31 do
  1876.        begin
  1877.          putpixel(j+153,i+16,iga[k10,j,i]);
  1878.          xje2:=j*4+5;ytje2:=i*4+5;
  1879.          vulvlak(xje2,xje2+2,ytje2,ytje2+2,iga[k10,j,i]);
  1880.        end;
  1881.   zetdef;
  1882. end;
  1883.  
  1884. {procedure knopje;
  1885. var compje:shortint;
  1886. begin
  1887.   repeat
  1888.   muisweg;
  1889.   compje:=(muisy-139);
  1890.   if compje+14>1 then k10:=compje+14 else k10:=1;
  1891.   if k10>60 then k10:=60;
  1892.   vulvlak(64,72,166,172,0);
  1893.   streef(k10,65,167);
  1894.   for i:=0 to 31 do
  1895.      for j:=0 to 31 do
  1896.        begin
  1897.          putpixel(j+153,i+16,iga[k10,j,i]);
  1898.          xje2:=j*4+5;ytje2:=i*4+5;
  1899.          vulvlak(xje2,xje2+2,ytje2,ytje2+2,iga[k10,j,i]);
  1900.        end;
  1901.   zetdef;
  1902.   muisterug;
  1903.   until (knop(1)=false) and (knop(2)=false);
  1904. end;}
  1905.  
  1906. procedure checkleft(x,y:integer;kn:byte);
  1907.    begin
  1908.       if (x>=5) and (x<=132) and (y>=5) and (y<=132) then if kn=1 then zetkl(x-1,y-1,kleur1) else zetkl(x-1,y-1,kleur2);;
  1909.       if (x>=91) and (x<=220) and (y>=144) and (y<=193) then if kn=1 then haalkl(x,y,kn) else haalkl(x,y,kn);
  1910.       if (x>=6) and (x<=32) and (y>=145) and (y<=155) then save;
  1911.       if (x>=34) and (x<=60) and (y>=145) and (y<=155) then load;
  1912.       if (x>=6) and (x<=32) and (y>=157) and (y<=167) then quit;
  1913.       if (x>=34) and (x<=60) and (y>=157) and (y<=167) then format;
  1914.       if (x>=6) and (x<=32) and (y>=175) and (y<=185) then clear;
  1915.       if (x>=34) and (x<=60) and (y>=175) and (y<=185) then copie;
  1916.       if (x>=6) and (x<=32) and (y>=187) and (y<=197) then paste;
  1917.       if (x>=34) and (x<=60) and (y>=187) and (y<=197) then cut;
  1918.       if (x>=198) and (x<=251) and (y>=52) and (y<=70) then input(x);
  1919.       if (x>=253) and (x<=306) and (y>=52) and (y<=70) then output(x);
  1920.       if (x>=148) and (x<=308) and (y>=106) and (y<=128) then padput;
  1921.       if (x>=74) and (x<=84) and (y>=140) and (y<=150) then knopbov;
  1922.       if (x>=74) and (x<=84) and (y>=189) and (y<=199) then knopond;
  1923.       {if (x>=74) and (x<=84) and (y>=141) and (y<=188) then knopje;}
  1924.       if (x>=64) and (x<=72) and (y>=166) and (y<=172) then schrijfin(64,166,k10);
  1925.       if (x>=247) and (x<=255) and (y>=155) and (y<=161) then schrijfin(247,155,k1);
  1926.       if (x>=274) and (x<=282) and (y>=155) and (y<=161) then schrijfin(274,155,k2);
  1927.       if (x>=247) and (x<=255) and (y>=165) and (y<=171) then schrijfin(247,165,k4);
  1928.       if (x>=274) and (x<=282) and (y>=165) and (y<=171) then schrijfin(274,165,k5);
  1929.       if (x>=254) and (x<=262) and (y>=184) and (y<=190) then schrijfin(254,184,k7);
  1930.       if (x>=278) and (x<=286) and (y>=184) and (y<=190) then schrijfin(278,184,k8);
  1931.    end;
  1932.  
  1933. procedure zetinup(var s:string);
  1934.    begin
  1935.       if pos('TURBO.EXE',s) > 0 then
  1936.          s := copy(s,1,pos('TURBO.EXE',s)-1);
  1937.       if pos('SPRITER.EXE',s) > 0 then
  1938.          s := copy(s,1,pos('SPRITER.EXE',s)-1);
  1939.    end;
  1940.  
  1941. procedure muisaandr;
  1942.    begin
  1943.       xgrensmuis(8,620);
  1944.       ygrensmuis(4,192);
  1945.       repeat
  1946.          x5:=muisx;
  1947.          y5:=muisy;
  1948.          writerec;
  1949.          if knop(1) then checkleft(x5,y5,1);
  1950.          if knop(2) then checkleft(x5,y5,2);
  1951.          {if keyss[1]=true then rep:=1;}
  1952.          if keyss[19] then
  1953.             begin
  1954.                st:=false;
  1955.                rset;
  1956.                keyss[19]:=false;
  1957.             end;
  1958.       until rep=1;
  1959.       keyss[1]:=false;
  1960.    end;
  1961.  
  1962. {procedure keybaandr;
  1963.    begin
  1964.       kadertje((rkx1+1)*4,(rkx2+2)*4,(rky1+1)*4,(rky2+2)*4,4);
  1965.       kadertje(kx1,kx1+5,ky1,ky1+5,15);
  1966.       kadertje(kx3,kx3+4,ky3,ky3+4,15);
  1967.       repeat
  1968.          selectkleur;
  1969.          zetkleur;
  1970.       until rep=1;
  1971.    end;}
  1972.  
  1973. procedure roset;
  1974.    begin
  1975.       chk1:=153;
  1976.       code:=0;
  1977.       pad:=paramstr(0);
  1978.       zetinup(pad);
  1979.       k1:=1; k2:=32; k3:=32;
  1980.       k4:=1; k5:=32; k6:=32;
  1981.       k7:=1; k8:=01; k9:=01;
  1982.       k10:=1;
  1983.       x5:=168;y5:=32;
  1984.       kx1:= 91;ky1:=144;
  1985.       kx2:= kx1;ky2:=ky1;
  1986.       kx3:=4;ky3:=4;
  1987.       kx4:=kx3;ky4:=ky3;
  1988.       kx5:=153;ky5:=16;
  1989.       rkx1:=0;rky1:=0;
  1990.       rkx2:=31;rky2:=31;
  1991.       rep:=0;
  1992.       kleur1:=0;
  1993.       kleur2:=0;
  1994.       fil1:=deff;fil2:=deff;
  1995.       initgr($13);
  1996.       scherm;
  1997.       for i:=0 to 7 do for j:=0 to 7 do
  1998.          begin
  1999.             bg^[j,i]:=scrn[y5+j,x5+i];
  2000.          end;
  2001.       resetmuis;
  2002.       zetmuisop(x5*2,y5);
  2003.       if st=true then
  2004.          begin
  2005.             writerec;
  2006.             for i:=0 to 7 do for j:=0 to 7 do
  2007.                 if muisc[j,i]<>0 then scrn[j+y5,i+x5]:=muisc[j,i];
  2008.          end;
  2009.       if st=true then muisaandr;
  2010.       {if st<>true then keybaandr;}
  2011.    end;
  2012.  
  2013. begin
  2014.    pad:=paramstr(0);
  2015.    zetinup(pad);
  2016.    getintvec(9,@p);
  2017.    setintvec(9,@keys);
  2018.    getmem(bg,64);
  2019.    {getmem(iga,61440);}
  2020.    getmem(clip,1026);
  2021.    for i:=0 to 7 do for j:=0 to 7 do bg^[i,j]:=0;
  2022.    assign(f,pad + 'spriter.dat');
  2023.    {$I-}
  2024.    reset(f,1);
  2025.    {$I+}
  2026.    if ioresult=0 then
  2027.       begin
  2028.          blockread(f,muisc,64);
  2029.          blockread(f,font2,885);
  2030.          blockread(f,def,15);
  2031.          blockread(f,t,768);
  2032.          close(f);
  2033.          setrgbpalette(0,768,seg(t),ofs(t));
  2034.          roset;
  2035.          initgr($3);
  2036.          textmode(co80);
  2037.       end
  2038.       else writeln('SPRITER.DAT not found. Please re-install in same directory!');
  2039.    freemem(clip,1026);
  2040.    {freemem(iga,61440);}
  2041.    freemem(bg,64);
  2042.    setintvec(9,@p);
  2043.    clrscr;
  2044.    {textcolor(10);
  2045.    textbackground(2);
  2046.    writeln('╔[■]══════════════════════════════════════════════════════════════════════════╗');
  2047.    for i:=2 to 18 do
  2048.    writeln('║                                                                             ║');
  2049.    writeln('╚═════════════════════════════════════════════════════════════════════════════╝');
  2050.    textcolor(14+blink);gotoxy(3,1);writeln('■');
  2051.    gotoxy(29,2);textcolor(4);writeln('Last Minute Notes:');
  2052.    textcolor(15);
  2053.    textbackground(0);}
  2054.  
  2055.    pad:=paramstr(0);
  2056.    zetinup(pad);
  2057.    gotoxy(1,20);
  2058.    assign(f,pad + 'SPRIV100.DOC');
  2059.    {$I-}
  2060.    reset(f,1);
  2061.    {$I+}
  2062.    if ioresult<>0 then writeln('SPRIV100.DOC not found.') else close(f);
  2063.    assign(f,pad + 'SPRIHIST.INS');
  2064.    {$I-}
  2065.    reset(f,1);
  2066.    {$I+}
  2067.    if ioresult<>0 then writeln('SPRIHIST.INS not found.') else close(f);
  2068.    if (st<>true) then writeln('No Mouse Found! Sorry, cannot start without it! :)')
  2069. end.
  2070.